
let a = Array.of( '孙悟空' , '孙行者' , '行者武松' , '者行孙' );

console.log( a.toString() );

// 1、使用 for 循环遍历数组
for( let i = 0 ; i < a.length ; i++ ){
    let e = a[ i ];
    console.log( i , e );
}

console.log( '- - - - - - - - - - - - - - -' );

// 2、使用 for/in 循环遍历数组
for( let index in a ){
    let e = a[ index ];
    console.log( index , e );
}

console.log( '- - - - - - - - - - - - - - -' );

/**
 * 在 forEach 函数内部被调用的函数。
 * 每处理数组中的一个元素就会调用一次该方法。
 * @param {*} element 表示当前循环所取得的元素
 * @param {*} index 表示当前循环所取得的元素的索引
 * @param {*} array 表示正在被遍历的数组本尊
 */
let op = function( element , index , array ){
    // console.log( index , element , array );
    console.log( element );
}

/* 为了帮助理解 forEach 内部实现，这里重写了一下 
Array.prototype.forEach = function( callback ){
    let array = this ;
    for( let index = 0 ; index < array.length ; index++ ){
        let element = this[ index ];
        console.log( '调用' + callback.name + '函数' );
        // 调用 callback 对应的函数 并依次为其传入相应的参数
        callback( element , index , array );
    }
}
*/

// 3、通过 Array.prototype 上定义的 forEach 遍历数组
a.forEach( op ); // Array.prototype.forEach 函数可以遍历数组